console.log('函数学习')

// 1. 声明式定义函数
function fn(a:number, b:number):number{
    return a + b;
}

// 2. 字面式
let num:number = 123;

// 完整写法
let f2:(a:number,b:number)=>number = function(a:number,b:number){
    return a + b;
}

// 简写，因为有类型推断
let f3 = function(a:number,b:number){
    return a + b;
}

// 2. ? 可选参数
function f4(a:number,b?:number):number{
    return a + 1;
}

f4(1,2);
f4(1); // 可选参数，第二个可传可不传

// 3. 参数默认值
function f5(a:number, b:number = 5):number{
    return a + b;
}


// 4. 剩余参数  args
function sum(a:number, ...args:number[]):number{
    console.log('args:', args);
    return a + args.reduce((pre,cur)=>pre + cur)
}

let res = sum(1,2,3,4,5);
console.log(res);

export {}